@isTest
private class UpsertInvoiceRESTTest {
    static testMethod void testMethod1() {
        TestUtils.createUsers();
        User appMan = [SELECT Id,Name FROM User WHERE Name='用户1' LIMIT 1];

//创建客户
Account acc1 = TestUtils.createAccount();
acc1.Name = '四川省sc迈克实业有限公司';
acc1.AccountNumber = 'AN.0001';
insert acc1;
Account acc2 = TestUtils.createAccount();
acc2.Name = '成都市sc第一人民医院';
acc2.AccountNumber = 'AN.0002';
insert acc2;
//创建产品
Product__c pro1 = TestUtils.createProduct();
pro1.Name = '尿有形成份检测稀释液UPS-1';
pro1.NCCode__c = 'P-0001';
insert pro1;
Product__c pro2 = TestUtils.createProduct();
pro2.Name = '尿有形成份检测稀释液UPS-2';
pro2.NCCode__c = 'P-0002';
insert pro2;
//创建联系人
        Contact con = TestUtils.createContact();
        con.MobilePhone = '13588885555';
        con.Post__c = '科长/主任';
//创建合同
        Contract__c ctr = TestUtils.createContract();
        ctr.Account__r = acc1;
        ctr.ContractNo__c = '1111134';
        //ctr.Corpcode__c = '四川省迈克实业有限公司';
        
        ctr.Name = '测试合同';
        insert ctr;
//创建订单
        Order__c ord = TestUtils.createOrder();
        ord.Account__c = acc1.Id;
        ord.Contact__c = con.Id;
        ord.Contract__c = ctr.Id;
        ord.Name = 'OP.2017010001';
        ord.NCsale_hid__c = '1';
        insert ord;
        //创建订单明细 
        Order_Product__c op1 = new Order_Product__c();
        op1.NCsalecode__c = 'OP.2017010001';
        op1.Order__c = ord.Id;
        op1.Original_Price__c = 21;
        op1.Quote_Price__c = 25;
        op1.Product__c = pro1.Id;
        op1.NCsale_bid__c = '1';
        insert op1;
        Order_Product__c op2 = new Order_Product__c();
        op2.NCsalecode__c = 'OP.2017010001';
        op2.Order__c = ord.Id;
        op2.Original_Price__c = 43;
        op2.Quote_Price__c = 56;
        op2.Product__c = pro2.Id;
        op2.NCsale_bid__c = '2';
        insert op2;

Test.startTest();
//测试
List<UpsertInvoiceREST.InvoiceRestArgs> args = new List<UpsertInvoiceREST.InvoiceRestArgs>();
UpsertInvoiceREST.upsertInvoice(args);

UpsertInvoiceREST.InvoiceRestArgs arg1 = new UpsertInvoiceREST.InvoiceRestArgs();
arg1.invoicecode = 'INV.001002003';//销售发票号
    arg1.invoice_hid = '1';//销售发票主表ID
    arg1.corpcode = 'CP-001';//公司编码
        arg1.corpname = '四川省迈克实业有限公司';//公司名称
        arg1.custcode = 'AN.0001';//客户编码
        arg1.custname = '四川省迈克实业有限公司';//客户名称
        arg1.dbilldate = '2017-01-01';//开票日期
    //从表数据
        arg1.invoice_bid = '1';//销售发票从表ID
        arg1.salecode = 'OP.2017010001';//销售订单号
        arg1.sale_hid = '1';//销售订单主表ID
        arg1.sale_bid = '1';//销售订单从表ID
        arg1.invcode = 'P-0001';//存货编码
        arg1.invname = '尿有形成份检测稀释液UPS-1';//存货名称
        arg1.invspec = '20x30';//产品规格
        arg1.invtype = '001';//产品型号
        arg1.jldw = '支';//计量单位
        arg1.fjldw = '盒';//辅计量单位
        arg1.vbatchcode = '1';//批次号
        arg1.nnum = '5000';//数量
        arg1.noriginalcurtaxprice = '23.5';//原币含税单价
        arg1.noriginalcursummny = '89000';//原币价税合计
        arg1.noriginalcurprice = '21.22';//原币无税单价
        arg1.noriginalcurmny = '65200';//原币无税金额
arg1.ts = '2017-01-01 15:00:00';
args.add(arg1);

UpsertInvoiceREST.InvoiceRestArgs arg2 = new UpsertInvoiceREST.InvoiceRestArgs();
arg2.invoicecode = 'INV.001002003';//销售发票号
    arg2.invoice_hid = '1';//销售发票主表ID
    arg2.corpcode = 'CP-001';//公司编码
        arg2.corpname = '四川省迈克实业有限公司';//公司名称
        arg2.custcode = 'AN.0001';//客户编码
        arg2.custname = '四川省迈克实业有限公司';//客户名称
        arg2.dbilldate = '2017-01-01';//开票日期
    //从表数据
        arg2.invoice_bid = '2';//销售发票从表ID
        arg2.salecode = 'OP.2017010001';//销售订单号
        arg2.sale_hid = '1';//销售订单主表ID
        arg2.sale_bid = '2';//销售订单从表ID
        arg2.invcode = 'P-0002';//存货编码
        arg2.invname = '尿有形成份检测稀释液UPS-2';//存货名称
        arg2.invspec = '10x30';//产品规格
        arg2.invtype = '001';//产品型号
        arg2.jldw = '支';//计量单位
        arg2.fjldw = '盒';//辅计量单位
        arg2.vbatchcode = '1';//批次号
        arg2.nnum = '5000';//数量
        arg2.noriginalcurtaxprice = '23.5';//原币含税单价
        arg2.noriginalcursummny = '89000';//原币价税合计
        arg2.noriginalcurprice = '21.22';//原币无税单价
        arg2.noriginalcurmny = '65200';//原币无税金额
arg2.ts = '2017-01-01 15:00:00';
args.add(arg2);

UpsertInvoiceREST.upsertInvoice(args);

UpsertInvoiceREST.InvoiceRestArgs arg3 = new UpsertInvoiceREST.InvoiceRestArgs();
arg3.invoicecode = 'INV.001002003';//销售发票号
    arg3.invoice_hid = '1';//销售发票主表ID
    arg3.corpcode = 'CP-001';//公司编码
        arg3.corpname = '四川省迈克实业有限公司';//公司名称
        arg3.custcode = 'AN.0001';//客户编码
        arg3.custname = '四川省迈克实业有限公司';//客户名称
        arg3.dbilldate = '2017-01-01';//开票日期
    //从表数据
        arg3.invoice_bid = '3';//销售发票从表ID
        arg3.salecode = 'OP.2017010002';//销售订单号
        arg3.sale_hid = '2';//销售订单主表ID
        arg3.sale_bid = '1';//销售订单从表ID
        arg3.invcode = 'P-0002';//存货编码
        arg3.invname = '尿有形成份检测稀释液UPS-2';//存货名称
        arg3.invspec = '10x30';//产品规格
        arg3.invtype = '001';//产品型号
        arg3.jldw = '支';//计量单位
        arg3.fjldw = '盒';//辅计量单位
        arg3.vbatchcode = '1';//批次号
        arg3.nnum = '5000';//数量
        arg3.noriginalcurtaxprice = '23.5';//原币含税单价
        arg3.noriginalcursummny = '89000';//原币价税合计
        arg3.noriginalcurprice = '21.22';//原币无税单价
        arg3.noriginalcurmny = '65200';//原币无税金额
arg3.ts = '2017-01-01 15:00:00';
args.add(arg3);

UpsertInvoiceREST.InvoiceRestArgs arg4 = new UpsertInvoiceREST.InvoiceRestArgs();
arg4.invoicecode = 'INV.001002004';//销售发票号
    arg4.invoice_hid = '3';//销售发票主表ID
    arg4.corpcode = 'CP-002';//公司编码
        arg4.corpname = '成都市第一人民医院';//公司名称
        arg4.custcode = 'AN.0002';//客户编码
        arg4.custname = '成都市第一人民医院';//客户名称
        arg4.dbilldate = '2017-01-05';//开票日期
    //从表数据
        arg4.invoice_bid = '3';//销售发票从表ID
        arg4.salecode = 'OP.2017010005';//销售订单号
        arg4.sale_hid = '5';//销售订单主表ID
        arg4.sale_bid = '7';//销售订单从表ID
        arg4.invcode = 'P-0007';//存货编码
        arg4.invname = '尿有形成份检测稀释液UPS-2';//存货名称
        arg4.invspec = '10x30';//产品规格
        arg4.invtype = '001';//产品型号
        arg4.jldw = '支';//计量单位
        arg4.fjldw = '盒';//辅计量单位
        arg4.vbatchcode = '1';//批次号
        arg4.nnum = '5000';//数量
        arg4.noriginalcurtaxprice = '23.5';//原币含税单价
        arg4.noriginalcursummny = '89000';//原币价税合计
        arg4.noriginalcurprice = '21.22';//原币无税单价
        arg4.noriginalcurmny = '65200';//原币无税金额
arg4.ts = '2017-01-01 15:45:00';
args.add(arg4);

UpsertInvoiceREST.upsertInvoice(args);

UpsertInvoiceREST.InvoiceRestArgs arg5 = new UpsertInvoiceREST.InvoiceRestArgs();
arg5.invoicecode = 'INV.001002005';//销售发票号
    arg5.invoice_hid = '5';//销售发票主表ID
    arg5.corpcode = 'CP-002';//公司编码
        arg5.corpname = '成都市第一人民医院';//公司名称
        arg5.custcode = 'AN.0002';//客户编码
        arg5.custname = '成都市第一人民医院';//客户名称
        arg5.dbilldate = '3333-33-33';//开票日期
    //从表数据
        arg5.invoice_bid = '98';//销售发票从表ID
        arg5.salecode = 'OP.2017010005';//销售订单号
        arg5.sale_hid = '5';//销售订单主表ID
        arg5.sale_bid = '8';//销售订单从表ID
        arg5.invcode = 'P-0002';//存货编码
        arg5.invname = '尿有形成份检测稀释液UPS-2';//存货名称
        arg5.invspec = '10x30';//产品规格
        arg5.invtype = '001';//产品型号
        arg5.jldw = '支';//计量单位
        arg5.fjldw = '盒';//辅计量单位
        arg5.vbatchcode = '1';//批次号
        arg5.nnum = 'R536';//数量
        arg5.noriginalcurtaxprice = 'dd';//原币含税单价
        arg5.noriginalcursummny = 'ss';//原币价税合计
        arg5.noriginalcurprice = 'fd.22';//原币无税单价
        arg5.noriginalcurmny = 'tee';//原币无税金额
arg5.ts = '2017-01-01 15:45:59';
args.add(arg5);

UpsertInvoiceREST.upsertInvoice(args);

        UpsertInvoiceREST.InvoiceRestArgs arg6 = new UpsertInvoiceREST.InvoiceRestArgs();
        arg6.invoicecode = 'INV.001002005.INV.001002005.INV.001002005.INV.001002005.INV.001002005.INV.001002005.INV.001002005.INV.001002005.INV.001002005.INV.001002005';//销售发票号
        arg6.invoice_hid = '5';//销售发票主表ID
        arg6.corpcode = 'CP-002';//公司编码
        arg6.corpname = '成都市第一人民医院';//公司名称
        arg6.custcode = 'AN.0002';//客户编码
        arg6.custname = '成都市第一人民医院';//客户名称
        arg6.dbilldate = '2017-01-29';//开票日期
        //从表数据
        arg6.invoice_bid = '98';//销售发票从表ID
        arg6.salecode = 'OP.2017010005';//销售订单号
        arg6.sale_hid = '5';//销售订单主表ID
        arg6.sale_bid = '8';//销售订单从表ID
        arg6.invcode = 'P-0002';//存货编码
        arg6.invname = '尿有形成份检测稀释液UPS-2';//存货名称
        arg6.invspec = '10x30';//产品规格
        arg6.invtype = '001';//产品型号
        arg6.jldw = '支';//计量单位
        arg6.fjldw = '盒';//辅计量单位
        arg6.vbatchcode = '1';//批次号
        arg6.nnum = '536';//数量
        arg6.noriginalcurtaxprice = '52';//原币含税单价
        arg6.noriginalcursummny = '555';//原币价税合计
        arg6.noriginalcurprice = '23.22';//原币无税单价
        arg6.noriginalcurmny = '65455';//原币无税金额
        arg6.ts = '2017-01-01 15:45:59';
        args.add(arg6);

        UpsertInvoiceREST.upsertInvoice(args);

Test.stopTest();
    }
}